﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;


namespace SAD
{
    class GestorBeneficiario
    {
        public static SqlConnection connection;
        List<Beneficiario> beneficiarios;
        string nuevoid;
        string consulta;

        static private Conexion conexionBD = new Conexion();
        
        private string GenerarIDVoluntario()
        {
            string consulta = "SELECT SUBSTRING(MAX(idBeneficiario),4,7) FROM Beneficiario";
            
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            string aux = dataReader[0] + "";
            int r;
            if (aux == "") r = 1;
            else r = Convert.ToInt32(aux) + 1;

            string id = r.ToString();
            int nrodig = id.Length;

            for (int i = 1; i <= 7 - nrodig; i++)
                id = "0" + id;
            id = "BEN" + id;
            dataReader.Close();
            return id;
        }

        public void registrarBeneficiario(Beneficiario beneficiario)
        {


            nuevoid = GenerarIDVoluntario();
            //idRol=convertirRol(voluntario.nombreRol);


            // El valor que necesitamos es el ID
            consulta = "INSERT INTO Beneficiario (idBeneficiario, nombres, apellidos, dni, telefono,IdUbicacion)" +
                                    "VALUES" + "(@ben,@nom,@ape,@dni,@tel,@idu);";

            connection = new SqlConnection(conexionBD.Cadenaconexion());
               

            SqlCommand cmd = new SqlCommand(consulta, connection);

            connection.Open();
            // String   cadena = sadconexion.CadenaConexion();
            //  SqlConnection con = new SqlConnection(cadena);
            // Abrimos la conexión

            // Añadimos el valor del parámetro de la consulta
            beneficiario.IdBeneficiario = nuevoid;

            cmd.Parameters.AddWithValue("@ben", nuevoid);
            cmd.Parameters.AddWithValue("@nom", beneficiario.Nombres);
            cmd.Parameters.AddWithValue("@ape", beneficiario.Apellidos);
            cmd.Parameters.AddWithValue("@dni", beneficiario.Dni);
            cmd.Parameters.AddWithValue("@tel", beneficiario.Telefono);
            cmd.Parameters.AddWithValue("@idu", beneficiario.IdUbicacion);



            try
            {
                //cmd.ExecuteNonQuery();
                // MessageBox.Show("Entra antes de ejecutar");
                cmd.ExecuteNonQuery();


                MessageBox.Show("SAD NOTIFICA-Se ejecuto el query");
            }
            catch
            {
                MessageBox.Show("SAD ALERTA-No se ejecuto el query");

            }

        }


        public Beneficiario BuscarBeneficiario(string idBeneficiario)
        {
            string consulta = "SELECT * FROM VOLUNTARIO WHERE idVoluntario = " + "\'" + @idBeneficiario + "\'" + ";";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            while (dataReader.Read())
            {
                Beneficiario beneficiario = new Beneficiario();

                beneficiario.IdBeneficiario = dataReader[0].ToString();
                beneficiario.Nombres = dataReader[1].ToString();
                beneficiario.Apellidos = dataReader[2].ToString();
                beneficiario.Dni = dataReader[3].ToString();
                beneficiario.Telefono = dataReader[4].ToString();
                beneficiario.IdUbicacion = dataReader[5].ToString();

                //Donde se asigna la ocurrencia al objeto creado?
                return beneficiario;
            }
            return null;

        }


        public void asignarBeneficiarios(List<Beneficiario> ben, Emergencia emer)
        {


            for (int i = 0; i < ben.Count; i++)
            {
               // Voluntario auxvol = ben[i];
                registrarBeneficiarioxEmergencia(ben[i], emer);
            }

        }

        public void registrarBeneficiarioxEmergencia(Beneficiario beneficiario, Emergencia emer)
        {


            // El valor que necesitamos es el ID
            consulta = "INSERT INTO BENEFICIARIOXEMERGENCIA (IdBeneficiario,IdEmergencia)" +
                                    "VALUES" + "(@bene,@eme);";
            connection = new SqlConnection(conexionBD.Cadenaconexion());


            SqlCommand cmd = new SqlCommand(consulta, connection);

            connection.Open();
            cmd.Parameters.AddWithValue("@bene", beneficiario);
            cmd.Parameters.AddWithValue("@eme", emer);



            try
            {
                //cmd.ExecuteNonQuery();
                // MessageBox.Show("Entra antes de ejecutar");
                cmd.ExecuteNonQuery();


                MessageBox.Show("SAD NOTIFICA-Se ejecuto el query");
            }
            catch
            {
                MessageBox.Show("SAD ALERTA-No se ejecuto el query");

            }


        }
    }
}
